package com.zhuhjay.common.base.config;

import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @author ZhuHJay
 * @date 2024/2/28 11:52
 */
@Data
@Slf4j
@Component
@ConfigurationProperties(prefix = "generic-boot.ip-resolve")
public class IpResolveConfig {

    private TengXunMapProp tx;

    @Data
    public static class TengXunMapProp {
        /** 是否启用 */
        private boolean enable = false;
        /** key, 如果启用则为必须参数 */
        private String key;
        /** 输出格式(jsonp/json), 默认为json */
        private String output = "json";
        /** 回调函数名 */
        private String callback;

        public boolean isEnable() {
            if (enable && (StrUtil.isBlank(key) || key.startsWith("${"))) {
                log.warn("腾讯地图 key 未提供！！！");
                return false;
            }
            return enable;
        }

        public String buildQuery(String ip) {
            Map<String, Object> map = MapUtil.<String, Object>builder()
                    .put("key", key)
                    .put("ip", ip)
                    .put("output", output)
                    .put(StrUtil.isNotBlank(callback), "callback", callback)
                    .build();
            return URLUtil.buildQuery(map, null);
        }
    }
}
